#include <assert.h>
#include <time.h>

#include "sdl.h"


const int TAILLE_SPRITE=32;
void SDL_apply_surface( SDL_Surface* source, SDL_Surface* destination, int x, int y );


void sdlAffpli(SdlJeu *pSdlJeu)
{
    int num,j;
    SDL_Rect Carte;
    SDL_Rect Carte2;

    Carte.x = 0;
    Carte.y = 0;
    Carte.h = 84;
    Carte.w = 62;

    Carte2.x = 120;
    Carte2.y = 200;
    Carte2.h = 84;
    Carte2.w = 62;

    for(j=0;j<4;j++)
    {
       num=pSdlJeu->je.pli[j].numero;

        if(num != 0)
        {
            Carte.y=1+(((num-1)/8)*84);
            while(num>8)
            {
                num=num-8;
            }
            Carte.x=num*62-62;
            SDL_BlitSurface(pSdlJeu->surface_jeux,&Carte,pSdlJeu->surface_ecran,&Carte2);
            Carte2.x = Carte2.x+70;
        }
    }
}

void sdlAffsud(SdlJeu *pSdlJeu)
{
    int num,j;
    SDL_Rect Carte2;
    SDL_Rect Carte;

	Carte.x = 0;
	Carte.y = 0;
	Carte.h = 84;
	Carte.w = 62;

	Carte2.x = 40;
	Carte2.y = 350;
	Carte2.h = 84;
	Carte2.w = 62;

    for(j=0;j<pSdlJeu->je.jo[2].nb_cartes;j++)
    {
       num=pSdlJeu->je.jo[2].main[j].numero;
       Carte.y=1+(((num-1)/8)*84);
       while(num>8)
       {
           num=num-8;
       }
       Carte.x=num*62-62;
       SDL_BlitSurface(pSdlJeu->surface_jeux,&Carte,pSdlJeu->surface_ecran,&Carte2);
        Carte2.x = Carte2.x+70;
    }
}

void sdlAffnord(SdlJeu *pSdlJeu)
{
    int i;
    SDL_Rect dos;
    SDL_Rect dos2;

	dos.x = 0;
	dos.y = 0;
	dos.h = 45;
	dos.w = 32;

	dos2.x = 100;
	dos2.y = 50;
	dos2.h = 45;
	dos2.w = 32;

    for(i=0;i<pSdlJeu->je.jo[0].nb_cartes;i++)
    {
        SDL_BlitSurface(pSdlJeu->surface_dos,&dos,pSdlJeu->surface_ecran,&dos2);
        dos2.x =dos2.x+50;
    }


}

void sdlAffest(SdlJeu *pSdlJeu)
{
    int i;
    SDL_Rect dos2;
    SDL_Rect dos;

	dos.x = 0;
	dos.y = 0;
	dos.h = 32;
	dos.w = 45;

	dos2.x = 550;
	dos2.y = 50;
	dos2.h = 32;
	dos2.w = 45;

    for(i=0;i<pSdlJeu->je.jo[3].nb_cartes;i++)
    {
        SDL_BlitSurface(pSdlJeu->surface_dos,&dos,pSdlJeu->surface_ecran,&dos2);
        dos2.y =dos2.y+50;
    }
}

void sdlAffouest(SdlJeu *pSdlJeu)
{
    int i;
    SDL_Rect dos;
    SDL_Rect dos2;

	dos.x = 0;
	dos.y = 0;
	dos.h = 32;
	dos.w = 45;

	dos2.x = 50;
	dos2.y = 50;
	dos2.h = 32;
	dos2.w = 45;

    for(i=0;i<pSdlJeu->je.jo[3].nb_cartes;i++)
    {
        SDL_BlitSurface(pSdlJeu->surface_dos,&dos,pSdlJeu->surface_ecran,&dos2);
        dos2.y =dos2.y+50;
    }
}

void sdlAffScore(SdlJeu *pSdlJeu)
{
    int score1, score2;
    char tab_score1[4];
    char tab_score2[4];
    SDL_Rect position;
    SDL_Rect position2;
    SDL_Color couleurNoire = {0, 0, 0};
    TTF_Font *police = TTF_OpenFont("data/POLICE.TTF",40);

    score1 = pSdlJeu->je.sc.score_equipe1;
    score2 = pSdlJeu->je.sc.score_equipe2;

    sprintf(tab_score1,"%d",score1);
    sprintf(tab_score2,"%d",score2);

    pSdlJeu->score1 = TTF_RenderText_Blended(police, tab_score1, couleurNoire);
    pSdlJeu->score2 = TTF_RenderText_Blended(police, tab_score2, couleurNoire);

    position.x = 200;
    position.y = 300;
    position2.x = 420;
    position2.y = 300;

    SDL_BlitSurface(pSdlJeu->score1,NULL,pSdlJeu->surface_ecran,&position);
    SDL_BlitSurface(pSdlJeu->score2,NULL,pSdlJeu->surface_ecran,&position2);
}


void sdljeuInit(SdlJeu *pSdlJeu)
{

    Jeu *je;
	int dimx, dimy;

    TTF_Init();

	je = &(pSdlJeu->je);
	jeInit(je);

    assert(  SDL_Init( SDL_INIT_EVERYTHING )!= -1 );

	dimx = diGet_DimX( jeGet_Const_Terrain_Ptr(je) );
	dimy = diGet_DimY( jeGet_Const_Terrain_Ptr(je) );
	dimx = dimx * TAILLE_SPRITE;
	dimy = dimy * TAILLE_SPRITE;

	pSdlJeu->surface_ecran = SDL_SetVideoMode( 640, 468, 32, SDL_SWSURFACE );

	assert( pSdlJeu->surface_ecran!=NULL);

	SDL_WM_SetCaption( "lif-coinche", NULL );

    pSdlJeu->surface_dos = SDL_LoadBMP("data/dos.bmp");
	if (pSdlJeu->surface_dos==NULL)
		pSdlJeu->surface_dos = SDL_LoadBMP("../data/dos.bmp");

	assert( pSdlJeu->surface_dos!=NULL);

    pSdlJeu->surface_vert = SDL_LoadBMP("data/tapis.bmp");
	if (pSdlJeu->surface_vert==NULL)
		pSdlJeu->surface_vert = SDL_LoadBMP("../data/tapis.bmp");

	assert( pSdlJeu->surface_vert!=NULL);

    pSdlJeu->surface_jeux = SDL_LoadBMP("data/jeux.bmp");
	if (pSdlJeu->surface_jeux==NULL)
		pSdlJeu->surface_jeux = SDL_LoadBMP("../data/jeux.bmp");

	assert( pSdlJeu->surface_jeux!=NULL);

    pSdlJeu->surface_contrat = SDL_LoadBMP("data/contrat.bmp");
	if (pSdlJeu->surface_contrat==NULL)
		pSdlJeu->surface_contrat = SDL_LoadBMP("../data/contrat.bmp");

	assert( pSdlJeu->surface_contrat!=NULL);

    pSdlJeu->surface_couleur = SDL_LoadBMP("data/couleur.bmp");
	if (pSdlJeu->surface_couleur==NULL)
		pSdlJeu->surface_couleur = SDL_LoadBMP("../data/couleur.bmp");

	assert( pSdlJeu->surface_couleur!=NULL);

	pSdlJeu->surface_ecran1 = SDL_LoadBMP("data/ecran1.bmp");
	if (pSdlJeu->surface_ecran1==NULL)
		pSdlJeu->surface_ecran1 = SDL_LoadBMP("../data/ecran1.bmp");

	assert( pSdlJeu->surface_ecran1!=NULL);

	pSdlJeu->surface_ecran2 = SDL_LoadBMP("data/ecran2.bmp");
	if (pSdlJeu->surface_ecran2==NULL)
		pSdlJeu->surface_ecran2 = SDL_LoadBMP("../data/ecran2.bmp");

	assert( pSdlJeu->surface_ecran2!=NULL);

	pSdlJeu->surface_score = SDL_LoadBMP("data/score.bmp");
	if (pSdlJeu->surface_score==NULL)
		pSdlJeu->surface_score = SDL_LoadBMP("../data/score.bmp");

	assert( pSdlJeu->surface_score!=NULL);

	pSdlJeu->surface_regles1 = SDL_LoadBMP("data/regles1.bmp");
	if (pSdlJeu->surface_regles1==NULL)
		pSdlJeu->surface_regles1 = SDL_LoadBMP("../data/regles1.bmp");
	assert( pSdlJeu->surface_regles1!=NULL);

	pSdlJeu->surface_regles2 = SDL_LoadBMP("data/regles2.bmp");
	if (pSdlJeu->surface_regles2==NULL)
		pSdlJeu->surface_regles2 = SDL_LoadBMP("../data/regles2.bmp");
	assert( pSdlJeu->surface_regles2!=NULL);

	pSdlJeu->surface_regles3 = SDL_LoadBMP("data/regles3.bmp");
	if (pSdlJeu->surface_regles3==NULL)
		pSdlJeu->surface_regles3 = SDL_LoadBMP("../data/regles3.bmp");
	assert( pSdlJeu->surface_regles3!=NULL);

	pSdlJeu->surface_regles4 = SDL_LoadBMP("data/regles4.bmp");
	if (pSdlJeu->surface_regles4==NULL)
		pSdlJeu->surface_regles4 = SDL_LoadBMP("../data/regles4.bmp");
	assert( pSdlJeu->surface_regles4!=NULL);
}


void sdljeuAff(SdlJeu *pSdlJeu)
{
    SDL_Rect tapis;
    SDL_FillRect( pSdlJeu->surface_ecran, &pSdlJeu->surface_ecran->clip_rect, SDL_MapRGB( pSdlJeu->surface_ecran->format, 0xFF, 0xFF, 0xFF ) );

	tapis.x = 0;
	tapis.y = 0;
	tapis.h = 468;
	tapis.w = 640;

    if(pSdlJeu->je.avancement == 0)
    {
        SDL_BlitSurface(pSdlJeu->surface_contrat,&tapis,pSdlJeu->surface_ecran,&tapis);
    }
    else if(pSdlJeu->je.avancement == 1)
    {
        SDL_BlitSurface(pSdlJeu->surface_couleur,&tapis,pSdlJeu->surface_ecran,&tapis);
    }
    else if(pSdlJeu->je.avancement == 4)
    {
        SDL_BlitSurface(pSdlJeu->surface_score,&tapis,pSdlJeu->surface_ecran,&tapis);
        sdlAffScore(pSdlJeu);
    }
    else if(pSdlJeu->je.avancement == 8)
    {
        SDL_BlitSurface(pSdlJeu->surface_ecran1,&tapis,pSdlJeu->surface_ecran,&tapis);
    }
    else if(pSdlJeu->je.avancement == 9)
    {
        SDL_BlitSurface(pSdlJeu->surface_ecran2,&tapis,pSdlJeu->surface_ecran,&tapis);
    }
    else if(pSdlJeu->je.avancement == 10)
    {
        SDL_BlitSurface(pSdlJeu->surface_regles1,&tapis,pSdlJeu->surface_ecran,&tapis);
    }
    else if(pSdlJeu->je.avancement == 11)
    {
        SDL_BlitSurface(pSdlJeu->surface_regles2,&tapis,pSdlJeu->surface_ecran,&tapis);
    }
    else if(pSdlJeu->je.avancement == 12)
    {
        SDL_BlitSurface(pSdlJeu->surface_regles3,&tapis,pSdlJeu->surface_ecran,&tapis);
    }
    else if(pSdlJeu->je.avancement == 13)
    {
        SDL_BlitSurface(pSdlJeu->surface_regles4,&tapis,pSdlJeu->surface_ecran,&tapis);
    }
    else
    {
        SDL_BlitSurface(pSdlJeu->surface_vert,&tapis,pSdlJeu->surface_ecran,&tapis);

        sdlAffnord(pSdlJeu);
        sdlAffouest(pSdlJeu);
        sdlAffest(pSdlJeu);

        sdlAffpli(pSdlJeu);
    }
    if ((pSdlJeu->je.avancement >= 0)&&(pSdlJeu->je.avancement <= 3))
    {
        sdlAffsud(pSdlJeu);
    }
}

void sdljeuBoucle(SdlJeu *pSdlJeu)
{
	SDL_Event event;
	int vainqueur;
	int continue_boucle = 1;
	int position;
    int i;


    /* Horloges (en secondes) */
    float horloge_courante, horloge_precedente;

    /* Intervalle de temps (en secondes) entre deux évolutions du jeu */
    /* Changer la valeur pour ralentir ou accélérer le déplacement des fantomes */
    float intervalle_horloge = 0.1f;

    int rafraichissement;

	sdljeuAff(pSdlJeu);
	assert( SDL_Flip( pSdlJeu->surface_ecran )!=-1 );

    /* Récupère l'horloge actuelle et la convertit en secondes */
    /* clock() retourne le nombre de tops horloge depuis le lancement du programme */
    horloge_precedente = (float)clock()/(float)CLOCKS_PER_SEC;

	/* Tant que ce n'est pas la fin ... */
	while ( continue_boucle == 1 )
	{
	    rafraichissement = 0;

	     /* Récupère l'horloge actuelle et la convertit en secondes */
        horloge_courante = (float)clock()/(float)CLOCKS_PER_SEC;

        /* Si suffisamment de temps s'est écoulé depuis la dernière prise d'horloge */
        if (horloge_courante-horloge_precedente>=intervalle_horloge)
        {
                rafraichissement = 1;
                horloge_precedente = horloge_courante;
        }

		/* tant qu'il y a des evenements à traiter : cette boucle n'est pas bloquante */
		while ( SDL_PollEvent( &event ) )
		{
			/* Si l'utilisateur a cliqué sur la croix de fermeture */
			if ( event.type == SDL_QUIT )
				continue_boucle = 0;

			if(pSdlJeu->je.avancement == 8)
			{
                if ( event.type == SDL_KEYDOWN )
                {
                    switch ( event.key.keysym.sym )
                    {
                    case SDLK_UP:
                        pSdlJeu->je.avancement = 9;
                        rafraichissement = 1;
                        break;
                    case SDLK_DOWN:
                        pSdlJeu->je.avancement = 9;
                        rafraichissement = 1;
                        break;
                    case SDLK_SPACE:
                        pSdlJeu->je.avancement = 0;
                        rafraichissement = 1;
                        break;

				default: break;
				}
			}
			}
			else if(pSdlJeu->je.avancement == 9)
			{
                if ( event.type == SDL_KEYDOWN )
                {
                    switch ( event.key.keysym.sym )
                    {
                    case SDLK_UP:
                        pSdlJeu->je.avancement = 8;
                        rafraichissement = 1;
                        break;
                    case SDLK_DOWN:
                        pSdlJeu->je.avancement = 8;
                        rafraichissement = 1;
                        break;
                    case SDLK_SPACE:
                        pSdlJeu->je.avancement = 10;
                        rafraichissement = 1;
                        break;

				default: break;
				}
                }
			}
			else if(pSdlJeu->je.avancement == 10)
			{
                if ( event.type == SDL_KEYDOWN )
                {
                    switch ( event.key.keysym.sym )
                    {
                    case SDLK_SPACE:
                        pSdlJeu->je.avancement = 11;
                        rafraichissement = 1;
                        break;

				default: break;
				}
                }
			}
			else if(pSdlJeu->je.avancement == 11)
			{
                if ( event.type == SDL_KEYDOWN )
                {
                    switch ( event.key.keysym.sym )
                    {
                    case SDLK_SPACE:
                        pSdlJeu->je.avancement = 12;
                        rafraichissement = 1;
                        break;

				default: break;
				}
                }
			}
			else if(pSdlJeu->je.avancement == 12)
			{
                if ( event.type == SDL_KEYDOWN )
                {
                    switch ( event.key.keysym.sym )
                    {
                    case SDLK_SPACE:
                        pSdlJeu->je.avancement = 13;
                        rafraichissement = 1;
                        break;

				default: break;
				}
                }
			}
			else if(pSdlJeu->je.avancement == 13)
			{
                if ( event.type == SDL_KEYDOWN )
                {
                    switch ( event.key.keysym.sym )
                    {
                    case SDLK_SPACE:
                        pSdlJeu->je.avancement = 8;
                        rafraichissement = 1;
                        break;

				default: break;
				}
                }
			}
			else if(pSdlJeu->je.avancement == 4)
            {
                if ( event.type == SDL_KEYDOWN )
                {
                    switch ( event.key.keysym.sym )
                    {
                        case SDLK_SPACE:
                            pSdlJeu->je.avancement = 0;

                            jeInit(&(pSdlJeu->je));

                            rafraichissement = 1;
                            break;
                        default: break;
                    }
                }
            }
            else if(pSdlJeu->je.avancement == 0)
            {
                /* Si l'utilisateur a appuyé sur une touche */
                if ( event.type == SDL_MOUSEBUTTONDOWN )
                {

                    if(event.button.button == SDL_BUTTON_LEFT)
                    {
                        if((event.button.x > 30)&&(event.button.x < 100))
                        {
                            if((event.button.y > 30)&&(event.button.y < 100))
                            {
                                pSdlJeu->je.avancement = 1;
                                coEnchere(&(pSdlJeu->je.co),80);
                                rafraichissement = 1;
                            }
                        }

                        if((event.button.x > 110)&&(event.button.x < 180))
                        {
                            if((event.button.y > 30)&&(event.button.y < 100))
                            {
                                pSdlJeu->je.avancement = 1;
                                coEnchere(&(pSdlJeu->je.co),90);
                                rafraichissement = 1;
                            }
                        }

                        if((event.button.x > 200)&&(event.button.x < 260))
                        {
                            if((event.button.y > 30)&&(event.button.y < 100))
                            {
                                pSdlJeu->je.avancement = 1;
                                coEnchere(&(pSdlJeu->je.co),100);
                                rafraichissement = 1;
                            }
                        }

                        if((event.button.x > 280)&&(event.button.x < 350))
                        {
                            if((event.button.y > 30)&&(event.button.y < 100))
                            {
                                pSdlJeu->je.avancement = 1;
                                coEnchere(&(pSdlJeu->je.co),110);
                                rafraichissement = 1;
                            }
                        }

                        if((event.button.x > 365)&&(event.button.x < 435))
                        {
                            if((event.button.y > 30)&&(event.button.y < 100))
                            {
                                pSdlJeu->je.avancement = 1;
                                coEnchere(&(pSdlJeu->je.co),120);
                                rafraichissement = 1;
                            }
                        }

                        if((event.button.x > 455)&&(event.button.x < 520))
                        {
                            if((event.button.y > 30)&&(event.button.y < 100))
                            {
                                pSdlJeu->je.avancement = 1;
                                coEnchere(&(pSdlJeu->je.co),130);
                                rafraichissement = 1;
                            }
                        }

                        if((event.button.x > 540)&&(event.button.x < 610))
                        {
                            if((event.button.y > 30)&&(event.button.y < 100))
                            {
                                pSdlJeu->je.avancement = 1;
                                coEnchere(&(pSdlJeu->je.co),140);
                                rafraichissement = 1;
                            }
                        }

                        if((event.button.x > 540)&&(event.button.x < 610))
                        {
                            if((event.button.y > 200)&&(event.button.y < 270))
                            {
                                caRedonne(pSdlJeu->je.jo[0].main,pSdlJeu->je.jo[1].main,pSdlJeu->je.jo[2].main,pSdlJeu->je.jo[3].main);

                                caTri(pSdlJeu->je.jo[0].main);
                                caTri(pSdlJeu->je.jo[1].main);
                                caTri(pSdlJeu->je.jo[2].main);
                                caTri(pSdlJeu->je.jo[3].main);

                                rafraichissement = 1;
                            }
                        }
                    }
                }
            }/* fin de traitement de la valeur du contrat */
            else if(pSdlJeu->je.avancement == 1)
            {
                /* Si l'utilisateur a appuyé sur une touche */
                if ( event.type == SDL_MOUSEBUTTONDOWN )
                {

                    if(event.button.button == SDL_BUTTON_LEFT)
                    {
                        if((event.button.x > 30)&&(event.button.x < 610))
                        {
                            if((event.button.y > 180)&&(event.button.y < 250))
                            {
                                pSdlJeu->je.avancement = 0;
                                rafraichissement = 1;
                            }
                        }

                        if((event.button.x > 30)&&(event.button.x < 160))
                        {
                            if((event.button.y > 30)&&(event.button.y < 150))
                            {
                                pSdlJeu->je.avancement = 2;
                                coCouleur(&(pSdlJeu->je.co),'t');
                                caAtout(pSdlJeu->je.jo[0].main,'t');
                                caAtout(pSdlJeu->je.jo[1].main,'t');
                                caAtout(pSdlJeu->je.jo[2].main,'t');
                                caAtout(pSdlJeu->je.jo[3].main,'t');
                                scAjoute_Annonce(&(pSdlJeu->je.sc),pSdlJeu->je.jo[0],pSdlJeu->je.jo[2],pSdlJeu->je.jo[3],pSdlJeu->je.jo[1]);
                                rafraichissement = 1;
                            }
                        }

                        if((event.button.x > 180)&&(event.button.x < 310))
                        {
                            if((event.button.y > 30)&&(event.button.y < 150))
                            {
                                pSdlJeu->je.avancement = 2;
                                coCouleur(&(pSdlJeu->je.co),'p');
                                caAtout(pSdlJeu->je.jo[0].main,'p');
                                caAtout(pSdlJeu->je.jo[1].main,'p');
                                caAtout(pSdlJeu->je.jo[2].main,'p');
                                caAtout(pSdlJeu->je.jo[3].main,'p');
                                scAjoute_Annonce(&(pSdlJeu->je.sc),pSdlJeu->je.jo[0],pSdlJeu->je.jo[2],
                                                 pSdlJeu->je.jo[3],pSdlJeu->je.jo[1]);
                                rafraichissement = 1;
                            }
                        }

                        if((event.button.x > 335)&&(event.button.x < 470))
                        {
                            if((event.button.y > 30)&&(event.button.y < 150))
                            {
                                pSdlJeu->je.avancement = 2;
                                coCouleur(&(pSdlJeu->je.co),'h');
                                caAtout(pSdlJeu->je.jo[0].main,'h');
                                caAtout(pSdlJeu->je.jo[1].main,'h');
                                caAtout(pSdlJeu->je.jo[2].main,'h');
                                caAtout(pSdlJeu->je.jo[3].main,'h');

                                scAjoute_Annonce(&(pSdlJeu->je.sc),pSdlJeu->je.jo[0],pSdlJeu->je.jo[2],
                                                 pSdlJeu->je.jo[3],pSdlJeu->je.jo[1]);

                                rafraichissement = 1;
                            }
                        }

                        if((event.button.x > 490)&&(event.button.x < 620))
                        {
                            if((event.button.y > 30)&&(event.button.y < 150))
                            {
                                pSdlJeu->je.avancement = 2;
                                coCouleur(&(pSdlJeu->je.co),'c');
                                caAtout(pSdlJeu->je.jo[0].main,'c');
                                caAtout(pSdlJeu->je.jo[1].main,'c');
                                caAtout(pSdlJeu->je.jo[2].main,'c');
                                caAtout(pSdlJeu->je.jo[3].main,'c');

                                scAjoute_Annonce(&(pSdlJeu->je.sc),pSdlJeu->je.jo[0],
                                                 pSdlJeu->je.jo[2],pSdlJeu->je.jo[3],pSdlJeu->je.jo[1]);

                                rafraichissement = 1;
                            }
                        }

                    }
                }
            }

            else if((pSdlJeu->je.avancement == 2)||(pSdlJeu->je.avancement == 3))
            {
                if((pSdlJeu->je.jo[0].nb_cartes > 0)||(pSdlJeu->je.jo[1].nb_cartes > 0)||
                   (pSdlJeu->je.jo[2].nb_cartes > 0)||(pSdlJeu->je.jo[3].nb_cartes > 0))
                {

                jeReset_Pli(pSdlJeu->je.pli);

                for (i=1;i<=4;i++)
                {

                    int j=0;

                    while(pSdlJeu->je.jo[j].position != i)
                    {
                        j++;
                    }
                    if(j != 2)
                    {
                        pSdlJeu->je.avancement = 3;
                    }
                    else if(j == 2)
                    {
                        pSdlJeu->je.avancement = 2;
                    }


                     if(pSdlJeu->je.avancement == 3)
                    {
                        if(i == 1)
                        {
                            pSdlJeu->je.pli[j]=joPose_Premiere_Carte(&(pSdlJeu->je.jo[j]),0);
                            position = j;
                            rafraichissement = 1;
                        }
                        else
                        {
                            pSdlJeu->je.pli[j]=joPose_Carte_Suivante(&(pSdlJeu->je.jo[j]),pSdlJeu->je.pli,0,position);
                            rafraichissement = 1;
                        }
                    }

                    while (pSdlJeu->je.avancement == 2)
                    {
sdljeuAff(pSdlJeu);

printf("num %d %d %d %d \n",pSdlJeu->je.pli[0].numero,pSdlJeu->je.pli[1].numero,
       pSdlJeu->je.pli[2].numero,pSdlJeu->je.pli[3].numero);

SDL_WaitEvent(&event);


                        /* Si l'utilisateur a appuyé sur une touche */
                        if( event.type == SDL_MOUSEBUTTONDOWN )
                        {

                            if(event.button.button == SDL_BUTTON_LEFT)
                            {
                                if((event.button.x > 40)&&(event.button.x < 100))
                                {
                                    if((event.button.y > 350)&&(event.button.y < 435))
                                    {
                                        int indice = 0;
                                        pSdlJeu->je.avancement = 3;
                                        if(i == 1)
                                        {
                                             pSdlJeu->je.pli[2]=joPose_Premiere_Carte(&(pSdlJeu->je.jo[2]),indice);
                                             position = j;
                                             rafraichissement = 1;
                                        }
                                        else
                                        {
                                            pSdlJeu->je.pli[2]=joPose_Carte_Suivante(&(pSdlJeu->je.jo[2]),
                                                                                     pSdlJeu->je.pli,indice,position);
                                            rafraichissement = 1;
                                        }
                                    }
                                }

                                if((event.button.x > 110)&&(event.button.x < 170))
                                {
                                    if((event.button.y > 350)&&(event.button.y < 435))
                                    {
                                        int indice = 1;
                                        pSdlJeu->je.avancement = 3;
                                        if(i == 1)
                                        {
                                             pSdlJeu->je.pli[2]=joPose_Premiere_Carte(&(pSdlJeu->je.jo[2]),indice);
                                             position = j;
                                             rafraichissement = 1;
                                        }
                                        else
                                        {
                                            pSdlJeu->je.pli[2]=joPose_Carte_Suivante(&(pSdlJeu->je.jo[2]),
                                                                                     pSdlJeu->je.pli,indice,position);
                                            rafraichissement = 1;
                                        }
                                    }
                                }

                                if((event.button.x > 180)&&(event.button.x < 240))
                                {
                                    if((event.button.y > 350)&&(event.button.y < 435))
                                    {
                                        int indice = 2;
                                        pSdlJeu->je.avancement = 3;
                                        if(i == 1)
                                        {
                                             pSdlJeu->je.pli[2]=joPose_Premiere_Carte(&(pSdlJeu->je.jo[2]),indice);
                                             position = j;
                                             rafraichissement = 1;
                                        }
                                        else
                                        {
                                            pSdlJeu->je.pli[2]=joPose_Carte_Suivante(&(pSdlJeu->je.jo[2]),
                                                                                     pSdlJeu->je.pli,indice,position);
                                            rafraichissement = 1;
                                        }
                                    }
                                }

                                if((event.button.x > 250)&&(event.button.x < 310))
                                {
                                    if((event.button.y > 350)&&(event.button.y < 435))
                                    {
                                        int indice = 3;
                                        pSdlJeu->je.avancement = 3;
                                        if(i == 1)
                                        {
                                             pSdlJeu->je.pli[2]=joPose_Premiere_Carte(&(pSdlJeu->je.jo[2]),indice);
                                             position = j;
                                             rafraichissement = 1;
                                        }
                                        else
                                        {
                                            pSdlJeu->je.pli[2]=joPose_Carte_Suivante(&(pSdlJeu->je.jo[2]),
                                                                                     pSdlJeu->je.pli,indice,position);
                                            rafraichissement = 1;
                                        }
                                    }
                                }

                                if((event.button.x > 320)&&(event.button.x < 380))
                                {
                                    if((event.button.y > 350)&&(event.button.y < 435))
                                    {
                                        int indice = 4;
                                        pSdlJeu->je.avancement = 3;
                                        if(i == 1)
                                        {
                                             pSdlJeu->je.pli[2]=joPose_Premiere_Carte(&(pSdlJeu->je.jo[2]),indice);
                                             position = j;
                                             rafraichissement = 1;
                                        }
                                        else
                                        {
                                            pSdlJeu->je.pli[2]=joPose_Carte_Suivante(&(pSdlJeu->je.jo[2]),
                                                                                     pSdlJeu->je.pli,indice,position);
                                            rafraichissement = 1;
                                        }
                                    }
                                }

                                if((event.button.x > 390)&&(event.button.x < 450))
                                {
                                    if((event.button.y > 350)&&(event.button.y < 435))
                                    {
                                        int indice = 5;
                                        pSdlJeu->je.avancement = 3;
                                        if(i == 1)
                                        {
                                             pSdlJeu->je.pli[2]=joPose_Premiere_Carte(&(pSdlJeu->je.jo[2]),indice);
                                             position = j;
                                             rafraichissement = 1;
                                        }
                                        else
                                        {
                                            pSdlJeu->je.pli[2]=joPose_Carte_Suivante(&(pSdlJeu->je.jo[2]),
                                                                                     pSdlJeu->je.pli,indice,position);
                                            rafraichissement = 1;
                                        }
                                    }
                                }

                                if((event.button.x > 460)&&(event.button.x < 520))
                                {
                                    if((event.button.y > 350)&&(event.button.y < 435))
                                    {
                                        int indice = 6;
                                        pSdlJeu->je.avancement = 3;
                                        if(i == 1)
                                        {
                                             pSdlJeu->je.pli[2]=joPose_Premiere_Carte(&(pSdlJeu->je.jo[2]),indice);
                                             position = j;
                                             rafraichissement = 1;
                                        }
                                        else
                                        {
                                            pSdlJeu->je.pli[2]=joPose_Carte_Suivante(&(pSdlJeu->je.jo[2]),
                                                                                     pSdlJeu->je.pli,indice,position);
                                            rafraichissement = 1;
                                        }
                                    }
                                }

                                if((event.button.x > 530)&&(event.button.x < 590))
                                {
                                    if((event.button.y > 350)&&(event.button.y < 435))
                                    {
                                        int indice = 7;
                                        pSdlJeu->je.avancement = 3;
                                        if(i == 1)
                                        {
                                             pSdlJeu->je.pli[2]=joPose_Premiere_Carte(&(pSdlJeu->je.jo[2]),indice);
                                             position = j;
                                             rafraichissement = 1;
                                        }
                                        else
                                        {
                                            pSdlJeu->je.pli[2]=joPose_Carte_Suivante(&(pSdlJeu->je.jo[2]),
                                                                                     pSdlJeu->je.pli,indice,position);
                                            rafraichissement = 1;
                                        }
                                    }
                                }
                            }
                      } /*fin traitement du choix de la carte */
                    }

                }

                vainqueur = joRemoporte_pli(pSdlJeu->je.pli,position);

                printf("%d\n", vainqueur);

                pSdlJeu->je.jo[vainqueur].position = 1;
                pSdlJeu->je.jo[(vainqueur+1)%4].position = 2;
                pSdlJeu->je.jo[(vainqueur+2)%4].position = 3;
                pSdlJeu->je.jo[(vainqueur+3)%4].position = 4;

                joAjoutePoint(&(pSdlJeu->je.jo[vainqueur]),pSdlJeu->je.pli);


            }
            else
            {
                pSdlJeu->je.avancement = 4;
                scCompte(pSdlJeu->je.co,pSdlJeu->je.jo[0],pSdlJeu->je.jo[2],pSdlJeu->je.jo[3],
                         pSdlJeu->je.jo[1],&(pSdlJeu->je.sc));
            }
            }
        }



        if (rafraichissement==1)
        {
            /* on affiche le jeu sur le buffer caché */
            sdljeuAff(pSdlJeu);

            /* on permute les deux buffers (cette fonction ne doit se faire qu'une seule fois dans a boucle) */
            SDL_Flip( pSdlJeu->surface_ecran );
        }
	}
}



void SDL_apply_surface( SDL_Surface* source, SDL_Surface* destination, int x, int y )
{
	/* Make a temporary rectangle to hold the offsets */
	SDL_Rect offset;

	/* Give the offsets to the rectangle */
	offset.x = x;
	offset.y = y;

	/* Blit the surface */
	SDL_BlitSurface( source, NULL, destination, &offset );
}
